package com.zjsru.plan2024.normal;

/**
 * 551. 学生出勤记录 I
 * @Author: cookLee
 * @Date: 2024-08-18
 */
public class CheckRecord {

    /**
     * 主
     * \
     * 'A'：Absent，缺勤
     * 'L'：Late，迟到
     * 'P'：Present，到场
     * \
     * 输入：s = "PPALLP"
     * 输出：true
     * 解释：学生缺勤次数少于 2 次，且不存在 3 天或以上的连续迟到记录。
     * \
     * 输入：s = "PPALLL"
     * 输出：false
     * 解释：学生最后三天连续迟到，所以不满足出勤奖励的条件。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        CheckRecord checkRecord = new CheckRecord();
        String s = "PPALLP";
        System.out.println(checkRecord.checkRecord2(s));
    }

    /**
     * 检查记录
     *
     * @param s s
     * @return boolean
     */
    public boolean checkRecord(String s) {
        int absents = 0,lates = 0;
        int len = s.length();
            for (int i = 0; i < len; i++) {
            char c = s.charAt(i);
            if(c == 'A'){
                absents++;
                if(absents >= 2){
                    return false;
                }
            }
            if(c == 'L'){
                lates++;
                if(lates >= 3){
                    return false;
                }
            }else{
                lates = 0;
            }
        }
        return true;
    }

    /**
     * 钥匙
     */
    private static final String KEY = "LLL";

    /**
     * 检查记录2
     *
     * @param s s
     * @return boolean
     */
    public boolean checkRecord2(String s) {
        int count = 0;
        for (int i = 0; i < s.toCharArray().length; i++) {
            char c = s.charAt(i);
            if (c == 'A') {
                count++;
            }
        }
        //如果满足缺勤两次或者是连续迟到三次就返回false
        return count < 2 && !s.contains(KEY);
    }

}
